package logicaNegocio;

import java.util.*;
import java.util.Map.Entry;

import logicaDatos.ConversorBD;


public class GestionProfesores {

	private Pertenece pe;
	private Clase c;
	private Profesor p;
	private String [] asignaturaAlumno;
	
	public String[] toStringAlumnos(String dniProfesor, int cont) 
	{
		ConversorBD con=new ConversorBD();
		int m = 0;
		p = (Profesor)con.leerProfesor().get(dniProfesor);
		String [] alumnos  = new String [cont];
		asignaturaAlumno = new String [cont];

		for (int k = 0; k<con.leerPertenece().size();k++)
		{
			pe = (Pertenece) con.leerPertenece().get(k);
			
			for (int i = 0; i<con.leerClase().size();i++)
			{
				Iterator<Entry<String, Alumno>> it = con.leerAlumno().entrySet().iterator();
				c = (Clase) con.leerClase().get(i);
				
				while (it.hasNext()) 
			    {
			    	Entry<String, Alumno> e = it.next();
			        Alumno a = (Alumno)con.leerAlumno().get(e.getKey());
					
			        if (p.getNombre().equals(c.getProfesor().getNombre()) )
					{
						if(pe.getAsignatura().getNombreAsignatura().equals((c.getAsignatura().getNombreAsignatura())))
						{
							if(a.getGrado().getNombreGrado().equals((pe.getGrado().getNombreGrado())))
							{
								alumnos [m] = a.getDni();
								asignaturaAlumno [m] = pe.getAsignatura().getNombreAsignatura();
								m++;
							}
						}
					}
			    }
			}
		}
		return alumnos;
	}
	public String [] getAsignaturaAlumno()
	{
		return asignaturaAlumno;
	}
	public int getNoAlumnos(String dniProfesor)
	{
		ConversorBD con=new ConversorBD();
		int m = 0;
		p = (Profesor)con.leerProfesor().get(dniProfesor);

		for (int k = 0; k<con.leerPertenece().size();k++)
		{
			pe = (Pertenece) con.leerPertenece().get(k);
			
			for (int i = 0; i<con.leerClase().size();i++)
			{
				Iterator<Entry<String, Alumno>> it = con.leerAlumno().entrySet().iterator();
				c = (Clase) con.leerClase().get(i);
				
				while (it.hasNext()) 
			    {
			    	Entry<String, Alumno> e = it.next();
			        Alumno a = (Alumno)con.leerAlumno().get(e.getKey());
					
			        if (p.getNombre().equals(c.getProfesor().getNombre()))
					{
						if(pe.getAsignatura().getNombreAsignatura().equals((c.getAsignatura().getNombreAsignatura())))
						{
							if(a.getGrado().getNombreGrado().equals((pe.getGrado().getNombreGrado())))
							{
								m++;
							}
						}
					}
			    }
			}
		}
		
		return m;
	}
	
	public int [] toStringAsignaturas(String dniProfesor, int cont)
	{
		int [] asignaturas  = new int [cont];
		int i = 0;
		ConversorBD con=new ConversorBD();
		p = con.leerProfesor().get(dniProfesor);

		for (int k = 0; k<con.leerClase().size();k++)
		{
			c = con.leerClase().get(k);
			
			if (p.getNombre().equals(c.getProfesor().getNombre() ))
			{
				asignaturas[i] = i;
				i++;
			}
		}
		return asignaturas;
	}
	public int getNoAsignaturas(String dniProfesor) 
	{
		ConversorBD con=new ConversorBD();
		int cont = 0;
		p = con.leerProfesor().get(dniProfesor);

		for (int k = 0; k<con.leerClase().size();k++)
		{
			c = con.leerClase().get(k);
			
			if (p.getNombre().equals(c.getProfesor().getNombre() ))
			{
				cont++;
			}
		}
		return cont;
	}
	public ArrayList<Clase> getClases() 
	{
		try
		{
		ConversorBD con=new ConversorBD();
		return con.leerClase();
		}
		catch (NullPointerException e)
		{
			return null;
		}
	}

	public ArrayList<Pertenece> getPerteneces() 
	{
		try
		{
		ConversorBD con=new ConversorBD();
		return con.leerPertenece();
		}
		catch (NullPointerException e)
		{
			return null;
		}
	}

	public Map <String,Alumno>getAlumnos() 
	{
		try{
		ConversorBD con=new ConversorBD();
		return con.leerAlumno();
		}
		catch (NullPointerException e)
		{
			return null;
		}
	}

	public Map <String,Profesor> getProfesores ()
	{
		try
		{
		ConversorBD objCon=new ConversorBD();
		return objCon.leerProfesor();
		}
		catch (NullPointerException e)
		{
			return null;
		}
	}
	
	public ArrayList<Asignatura> getAsignaturas() 
	{
		try
		{
		ConversorBD objCon=new ConversorBD();
		return objCon.leerAsignatura();
		}
		catch (NullPointerException e)
		{
			return null;
		}
	}
}
